home *** CD-ROM | disk | FTP | other *** search
/ Aminet 25 / Aminet 25 (1998)(GTI - Schatztruhe)[!][Jun 1998].iso / Aminet / comm / misc / RecentScript.lha / RecentScript / RecentScript.rexx < prev    next >
Encoding:
OS/2 REXX Batch file  |  1998-03-15  |  10.8 KB  |  352 lines

  1. /*****
  2.   $VER: RecentScript Starter 1.7 (14.3.98) ©Arndt van der Molen
  3.  
  4.  
  5.                    RecentScript Starter
  6.  
  7.  is a MUIRexx application and must be started under MUIRexx
  8.  
  9.  1> MUIRexx "RecentScript.rexx [<arg>]" PORT RECENTSCRIPT
  10.  
  11.  This application reads AmiNet index files or recent mails as
  12.  distributed from a mailserver or recent news published in
  13.  the newsgroup '*.comp.sys.amiga.archive'.
  14.  
  15.  It opens a MUI graphical user interface to select files for
  16.  downloading, copying or remembering. Files can be selected
  17.  from several input sources into one final list at one or
  18.  more sessions.
  19.  
  20.  Finally you can generate a final user defined output from
  21.  the selected files. This can be an ARexx/DOS script or
  22.  simply a text file. New output configurations can easily be
  23.  edited, added and may contain user defined variables which
  24.  can be altered within the program.
  25. *****/
  26.  
  27.  
  28.  
  29. /* Change to path with trailing ':' or '/' where this script resides */
  30.  
  31. srcdir = 'MUIREXX:RecentScript/'
  32.  
  33.  
  34. /* !!! NOTHING TO CHANGE BELOW THIS LINE !!! */
  35.  
  36. OPTIONS RESULTS
  37.  
  38. PARSE ARG recentfile
  39.  
  40.  
  41. /* Startup code before opening window */
  42.  
  43. portname = 'RECENTSCRIPT'
  44. closecom = '"quit"'
  45.  
  46. PRAGMA('Directory',srcdir) /* Set current directory */
  47.  
  48. ADDRESS VALUE portname
  49.  
  50. IF ~SHOW('l', "rexxsupport.library") then do
  51.     CALL addlib('rexxsupport.library',0,-30,0)
  52. END
  53.  
  54.  
  55. /* Get all Config files 'Configs/#?.cfg' */
  56.  
  57. configs.0 = 0
  58. i = 0
  59. allfiles = showdir(srcdir || 'Configs', 'f', ';')
  60.  
  61. DO WHILE allfiles ~= ''
  62.  
  63.   PARSE VAR allfiles entry';'allfiles
  64.  
  65.   IF RIGHT(entry,4) = ".cfg" & LENGTH(entry) > 4 THEN DO
  66.     configs.0 = configs.0 + 1
  67.     i = configs.0
  68.     configs.i = LEFT(entry, LENGTH(entry)-4)
  69.   END
  70. END
  71.  
  72.  
  73. /* Alphabetic sort of the configs */
  74. DO i=1 TO configs.0
  75.   DO j=configs.0 TO (i+1) BY -1
  76.     IF UPPER(configs.i) > UPPER(configs.j) THEN DO
  77.       dummy     = configs.i
  78.       configs.i = configs.j
  79.       configs.j = dummy
  80.     END
  81.   END
  82. END
  83.  
  84.  
  85. /* Get all Importer files 'Importers/#?.rexx' */
  86.  
  87. importers.0 = 0
  88. i = 0
  89. allfiles = showdir(srcdir || 'Importers', 'f', ';')
  90.  
  91. DO WHILE allfiles ~= ''
  92.  
  93.   PARSE VAR allfiles entry';'allfiles
  94.  
  95.   IF RIGHT(entry,5) = ".rexx" & LENGTH(entry) > 5 THEN DO
  96.     importers.0 = importers.0 + 1
  97.     i = importers.0
  98.     importers.i = LEFT(entry, LENGTH(entry)-5)
  99.   END
  100. END
  101.  
  102.  
  103. /* Alphabetic sort of the importers */
  104. DO i=1 TO importers.0
  105.   DO j=importers.0 TO (i+1) BY -1
  106.     IF UPPER(importers.i) > UPPER(importers.j) THEN DO
  107.       dummy     = importers.i
  108.       importers.i = importers.j
  109.       importers.j = dummy
  110.     END
  111.   END
  112. END
  113.  
  114.  
  115. /* Build up cycle button string with all configs */
  116.  
  117. cyc_savemodes = 'AmiNet Index'
  118.  
  119. DO i=1 TO configs.0
  120.   cyc_savemodes = cyc_savemodes || ',' || configs.i
  121. END
  122.  
  123.  
  124. /* Build up cycle button string with all importers */
  125.  
  126. cyc_loadmodes = 'File'
  127.  
  128. DO i=1 TO importers.0
  129.   cyc_loadmodes = cyc_loadmodes || ',' || importers.i
  130. END
  131.  
  132.  
  133. /* GUI strings */
  134.  
  135. GUI_PROJECT         = 'Project'
  136. GUI_ABOUT           = 'About...'
  137. GUI_HIDE            = 'Hide'
  138. GUI_QUIT            = 'Quit'
  139. GUI_SETTINGS        = 'Settings'
  140. GUI_CONFIGURATIONS  = 'Configurations'
  141. GUI_QUIT_AFTER_SAVE = 'Quit after save'
  142. GUI_SAVE_SETTINGS   = 'Save settings'
  143. GUI_AMINET_INDEX    = 'AmiNet Index'
  144. GUI_CLEAR_LIST      = 'Clear list'
  145. GUI_SELECT_ALL      = 'Select all'
  146. GUI_TOGGLE          = 'Toggle'
  147. GUI_DESELECT_ALL    = 'Deselect all'
  148. GUI_ADD             = 'Add'
  149. GUI_IMPORT          = 'Import'
  150. GUI_FROM            = 'from'
  151. GUI_SELECTED_FILES  = 'Selected Files'
  152. GUI_SAVE            = 'Save...'
  153. GUI_AS              = 'as'
  154. GUI_SORT_BY_FILE    = 'Sort by file'
  155. GUI_AMINET_FILTER   = 'AminetFilter'
  156. GUI_ACTIVE          = 'Active'
  157.  
  158. /* GUI Help Bubbles */
  159.  
  160. HLP_BUT_ADD   = '"Adds selected entries"'
  161. HLP_LST_ALL   = '"Doubleclick to add an entry or\nMultiselect entries and click ''Add''.\nEntries in \033iitalic\033n are the ''Most Downloaded Archives''\nEntries in \033bbold\033n are the ''Top Rated Archives''\nUse the right mouse button for a PopUp menu!"'
  162. HLP_BUT_CLR   = '"Clears the file list"'
  163. HLP_BUT_LOD   = '"Imports an index from the selected source"'
  164. HLP_BUT_MINUS = '"Deselects entries with search string"'
  165. HLP_BUT_PLUS  = '"Selects entries with search string"'
  166. HLP_BUT_SAV   = '"Saves the archives in selected mode"'
  167. HLP_BUT_TEST  = '"Only for internal use"'
  168. HLP_LST_SEL   = '"Doubleclick to remove entry.\nUse the right mouse button for a PopUp menu!"'
  169. HLP_STR_PATT  = '"Defines search string (without wildcards!)"'
  170. HLP_CYC_BAT   = '"Defines configuration to use for saving"'
  171. HLP_CYC_LOD   = '"Defines the import source"'
  172. HLP_TXT_NR    = '"Number of files in list"'
  173. HLP_TXT_KB    = '"kB size of files in list"'
  174.  
  175. /* TAG Attributes Definitions */
  176.  
  177. MUIA_List_Format          = '0x80423c0a'
  178. MUIA_Listview_MultiSelect = '0x80427e08'
  179. MUIA_VertWeight           = '0x804298d0'
  180. MUIA_Busy_Speed           = '0x80020049'
  181. MUIA_Weight               = '0x80421d1f'
  182. MUIA_Menuitem_Shortcut    = '0x80422030'
  183. MUIA_Menuitem_Title       = '0x804218be'
  184. MUIA_Menuitem_Checkit     = '0x80425ace'
  185. MUIA_Menuitem_Checked     = '0x8042562a'
  186. MUIA_Menuitem_Toggle      = '0x80424d5c'
  187. MUIA_Listview_DragType    = '0x80425cd3'
  188. MUIA_List_DragSortable    = '0x80426099'
  189.  
  190. /* TAG Methods Definitions */
  191.  
  192. MUIM_Application_OpenConfigWindow = '0x804299ba'
  193.  
  194. /* TAG Variable definitions */
  195.  
  196. MUIV_List_Insert_Bottom           = -3
  197. MUIV_Listview_MultiSelect_Default =  1
  198. MUIV_Busy_Speed_Off               =  0
  199. MUIV_Listview_DragType_Immediate  =  1
  200.  
  201. /* GUI Commands */
  202.  
  203. CMD_BUT_ADD   = '"'srcdir'RecentScriptCmd 'portname' ADD"'
  204. CMD_LST_ALL   = '"'srcdir'RecentScriptCmd 'portname' ADD"'
  205. CMD_POP_CLR1  = '"'srcdir'RecentScriptCmd 'portname' CLR LST_ALL"'
  206. CMD_POP_CLR2  = '"'srcdir'RecentScriptCmd 'portname' CLR LST_SEL"'
  207. CMD_POP_SAL1  = '"'srcdir'RecentScriptCmd 'portname' SAL LST_ALL"'
  208. CMD_POP_TGL1  = '"'srcdir'RecentScriptCmd 'portname' TGL LST_ALL"'
  209. CMD_POP_DAL1  = '"'srcdir'RecentScriptCmd 'portname' DAL LST_ALL"'
  210. CMD_BUT_DEL   = '"'srcdir'RecentScriptCmd 'portname' DEL"' 
  211. CMD_BUT_LOD1  = '"'srcdir'RecentScriptCmd 'portname' LOAD LST_ALL"'
  212. CMD_BUT_LOD2  = '"'srcdir'RecentScriptCmd 'portname' LOAD LST_SEL"'
  213. CMD_BUT_MINUS = '"'srcdir'RecentScriptCmd 'portname' MINUS"' 
  214. CMD_BUT_PLUS  = '"'srcdir'RecentScriptCmd 'portname' PLUS"' 
  215. CMD_BUT_SAV   = '"'srcdir'RecentScriptCmd 'portname' SAVE"' 
  216. CMD_MEN_ABOUT = '"'srcdir'RecentScriptCmd 'portname' ABOUT"'
  217. CMD_MEN_SETB  = '"'srcdir'RecentScriptCmd 'portname' SETBAT dummy [%s]"'
  218. CMD_POP_SFIL1 = '"'srcdir'RecentScriptCmd 'portname' SORT LST_ALL"'
  219. CMD_MEN_CFG   = '"'srcdir'RecentScriptCmd 'portname' SAVECFG"'
  220. CMD_BUT_TEST  = '"'srcdir'RecentScriptCmd 'portname' TEST LST_ALL"'
  221. CMD_MEN_SETF  = '"'srcdir'RecentScriptCmd 'portname' SETFLT"'
  222.  
  223. /* GUI Titles */
  224.  
  225. TLE_LST_ALL = ''"\033bFile,\033bDir,\033bSize,\033bAge,\033bDescription"''
  226. TLE_LST_SEL = ''"\033bFile,\033bDir,\033bSize,\033bAge,\033bDescription"''
  227.  
  228.  
  229. /* GUI Definitions */
  230.  
  231. window ID RECSCRWIN TITLE 'RecentScript' COMMAND closecom PORT portname
  232.  
  233.   menu LABEL GUI_PROJECT
  234.     item COMMAND CMD_MEN_ABOUT LABEL GUI_ABOUT
  235.     item ATTRS MUIA_Menuitem_Title '-1'
  236.     item COMMAND '"hide"' PORT portname ATTRS MUIA_Menuitem_Shortcut 'H' LABEL GUI_HIDE
  237.     item COMMAND closecom PORT portname ATTRS MUIA_Menuitem_Shortcut 'Q' LABEL GUI_QUIT
  238.   endmenu
  239.  
  240.   menu LABEL GUI_SETTINGS
  241.  
  242.     menu LABEL GUI_CONFIGURATIONS
  243.  
  244.       /* For each found config add one menuitem */
  245.       DO i=1 TO configs.0
  246.         item COMMAND CMD_MEN_SETB LABEL configs.i || "..."
  247.       END
  248.     endmenu
  249.  
  250.     item ATTRS MUIA_Menuitem_Title '-1'
  251.     menu LABEL GUI_AMINET_FILTER
  252.       item COMMAND CMD_MEN_SETF LABEL GUI_SETTINGS || "..."
  253.       item ID MEN_AMF ATTRS MUIA_Menuitem_Checkit '1' MUIA_Menuitem_Toggle '1' LABEL GUI_ACTIVE
  254.     endmenu
  255.     item ID MEN_QAS ATTRS MUIA_Menuitem_Checkit '1' MUIA_Menuitem_Toggle '1' LABEL GUI_QUIT_AFTER_SAVE
  256.     item COMMAND CMD_MEN_CFG LABEL GUI_SAVE_SETTINGS
  257.     item ATTRS MUIA_Menuitem_Title '-1'
  258.     item COMMAND '"method 'MUIM_Application_OpenConfigWindow'"' PORT portname LABEL 'MUI...'
  259.   endmenu
  260.  
  261.   group ATTRS MUIA_VertWeight 70 FRAME LABEL GUI_AMINET_INDEX
  262.  
  263.     group
  264.       menu LABEL GUI_AMINET_INDEX
  265.         item COMMAND CMD_POP_CLR1  LABEL GUI_CLEAR_LIST
  266.         item COMMAND CMD_POP_SAL1  LABEL GUI_SELECT_ALL
  267.         item COMMAND CMD_POP_TGL1  LABEL GUI_TOGGLE
  268.         item COMMAND CMD_POP_DAL1  LABEL GUI_DESELECT_ALL
  269.         item COMMAND CMD_POP_SFIL1 LABEL GUI_SORT_BY_FILE
  270.       endmenu
  271.  
  272.       list ID LST_ALL COMMAND CMD_LST_ALL HELP HLP_LST_ALL TITLE TLE_LST_ALL ATTRS MUIA_Listview_MultiSelect MUIV_Listview_MultiSelect_Default MUIA_List_Format '"MIW=1 BAR, MIW=1 BAR, MIW=1 P=\033r BAR, MIW=1 P=\033r BAR, MIW=96"'
  273.     endgroup
  274.  
  275.     group HORIZ
  276.  
  277.       group HORIZ FRAME
  278.         button ATTRS MUIA_Weight 0 COMMAND CMD_BUT_ADD   HELP HLP_BUT_ADD   LABEL GUI_ADD
  279.       endgroup
  280.  
  281.       group HORIZ FRAME ATTRS MUIA_Weight 50
  282.         string ATTRS MUIA_Weight 70 ID STR_PATT           HELP HLP_STR_PATT
  283.         button ATTRS MUIA_Weight 0  COMMAND CMD_BUT_PLUS  HELP HLP_BUT_PLUS  LABEL '+'
  284.         button ATTRS MUIA_Weight 0  COMMAND CMD_BUT_MINUS HELP HLP_BUT_MINUS LABEL '-'
  285.       endgroup
  286.  
  287.       group HORIZ ATTRS MUIA_Weight 0
  288.         label "#"
  289.         text ID AFILES HELP HLP_TXT_NR LABEL RIGHT(0, 5, '0')
  290.         label "kB"
  291.         text ID AKB HELP HLP_TXT_KB LABEL RIGHT(0, 6, '0')
  292.       endgroup
  293.  
  294.       group HORIZ FRAME ATTRS MUIA_Weight 0
  295.         button COMMAND CMD_BUT_LOD1 HELP HLP_BUT_LOD LABEL GUI_IMPORT
  296.         label GUI_FROM
  297.         cycle  ID CYC_ALL HELP HLP_CYC_LOD LABELS cyc_loadmodes
  298.       endgroup
  299.     endgroup
  300. /*    button ATTRS MUIA_Weight 0  COMMAND CMD_BUT_TEST  HELP HLP_BUT_TEST  LABEL 'Test' */
  301.   endgroup
  302.  
  303.   object CLASS '"Busy.mcc"' ID CLS_BUSY ATTRS MUIA_VertWeight 0 MUIA_Busy_Speed MUIV_Busy_Speed_Off
  304.   object CLASS '"Balance.mui"'
  305.  
  306.   group ATTRS MUIA_VertWeight 30 FRAME LABEL GUI_SELECTED_FILES
  307.  
  308.     group
  309.       menu LABEL GUI_SELECTED_FILES
  310.         item COMMAND CMD_POP_CLR2  LABEL GUI_CLEAR_LIST
  311.       endmenu
  312.  
  313.       list ID LST_SEL COMMAND CMD_BUT_DEL HELP HLP_LST_SEL TITLE TLE_LST_SEL ATTRS MUIA_List_Format '"MIW=1 BAR, MIW=1 BAR, MIW=1 P=\033r BAR, MIW=1 P=\033r BAR, MIW=96"'
  314.     endgroup
  315.  
  316.     group HORIZ
  317.       group HORIZ FRAME ATTRS MUIA_Weight 50
  318.         button COMMAND CMD_BUT_SAV  HELP HLP_BUT_SAV LABEL GUI_SAVE
  319.         label GUI_AS
  320.         cycle  ID CYC_BAT           HELP HLP_CYC_BAT LABELS cyc_savemodes
  321.       endgroup
  322.  
  323.       group HORIZ ATTRS MUIA_Weight 0
  324.         label "#"
  325.         text ID SFILES HELP HLP_TXT_NR LABEL RIGHT(0, 5, '0')
  326.         label "kB"
  327.         text ID SKB HELP HLP_TXT_KB LABEL RIGHT(0, 6, '0')
  328.       endgroup
  329.  
  330.       group HORIZ FRAME ATTRS MUIA_Weight 0
  331.         button COMMAND CMD_BUT_LOD2 HELP HLP_BUT_LOD LABEL GUI_IMPORT
  332.         label GUI_FROM
  333.         cycle  ID CYC_SEL HELP HLP_CYC_LOD LABELS cyc_loadmodes
  334.       endgroup
  335.     endgroup
  336.  
  337.   endgroup
  338. endwindow
  339.  
  340.  
  341. /* Startup code after opening window */
  342.  
  343. CALL RecentScriptCmd portname LOADCFG
  344.  
  345. IF recentfile ~= '' THEN DO
  346.   CALL RecentScriptCmd portname LOAD LST_ALL '['recentfile']'
  347. END
  348.  
  349. CALL RecentScriptCmd portname LOAD LST_SEL '['srcdir'RecentScript.lst]'
  350.  
  351. EXIT
  352.